const axios = require("axios");

class Ip {
  constructor() {}
  static async get(ctx) {
    let ip =
      ctx.get("X-Forwarded-For") ||
      ctx.get("X-Real-IP") ||
      ctx.get("Forwarded") ||
      ctx.ip;

    // 处理 X-Forwarded-For 的情况，它可能包含多个 IP 地址
    if (ip && ip.split(",").length > 0) {
      // 假设最左边的 IP 是客户端的真实 IP
      ip = ip.split(",")[0].trim();
    }

    // 确保 IP 地址是有效的
    // 这里只是简单的检查，实际应用中可能需要更严格的验证
    if (!ip.match(/^(?:\d{1,3}\.){3}\d{1,3}$/)) {
      ip = ctx.ip; // 如果不是有效的 IP 地址，则使用 ctx.ip
    }
    let key = "MSUBZ-K2W34-3CIUT-F3CLO-GNSRE-KHBIU";
    let area = await axios.get(
      `https://apis.map.qq.com/ws/location/v1/ip?ip=${ip}&key=${key}`
    );
    return area;
  }
}

module.exports = {
  Ip,
};

